1
HIP 生态系统的架构基础
AI022Lesson 3
00:00

HIP 生态系统 被设计为一个轻量级抽象层,旨在实现 AMD 与 NVIDIA 架构之间的源代码兼容性。它利用了 ROCm(Radeon 开源计算) 堆栈,特别是利用了 异构系统架构(HSA) 运行时和 内核融合驱动程序(KFD)

1. 初始化启动

初始化始于通过 hsa_init(0, ...)hsaKmtOpenKFD(...)的底层内核驱动握手操作。这些调用建立了用户空间应用程序与 AMD GPU 硬件之间的通信桥梁。

2. 拓扑与属性发现

在启动内核之前,运行时使用 hsaKmtAcquireSystemPropertieshsaKmtGetNodeProperties来识别硬件功能。它通过使用 hsaKmtMapMemoryToGPUNodes将物理内存映射到 GPU 节点,确保设备的页表可见性。

3. 编译流程

CUDA 与 HIP 之间的桥梁建立在两大支柱之上: hipify-perl (基于正则表达式的转换器)以及 hipcc (编译器包装器)。

# 迁移工作流示例
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. 版本管理逻辑

通过精确的公式强制保证 hipRuntimeGetVersion 与 HSA 扩展表对齐:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

应用层(./square.out)HIP 层(hipcc / 运行时 API)HSA 运行时 / 扩展表内核驱动程序(KFD)与硬件
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>